Digital video is used for various purposes including, for example, remote business meetings via video conferencing, high definition video entertainment, video advertisements, and sharing of user-generated videos. As technology is evolving, users have higher expectations for video quality and expect high resolution video even when transmitted over communications channels having limited bandwidth.
To permit higher quality transmission of video while limiting bandwidth consumption, a number of video compression schemes are noted including proprietary formats such as VPx (promulgated by Google Inc. of Mountain View, Calif.) and H.264, standard promulgated by ITU-T Video Coding Experts Group (VCEG) and the ISO/IEC Moving Picture Experts Group (MPEG), including present and future versions thereof. H.264 is also known as MPEG-4 Part 10 or MPEG-4 AVC (formally, ISO/IEC 14496-10).
Some current data coding systems use entropy coders for lossless data compression. Arithmetic coding is one form of entropy coding that can be used in lossless data compression. Arithmetic coders can, for example, represent a string of characters (which would normally be represented using a fixed number of bits per character) so that frequently used characters are stored with fewer bits and not-so-frequently occurring characters are stored with more bits. Commonly, the result is that fewer bits are used to represent the string of characters than would be otherwise.
More specifically, arithmetic coding can code the entire string of characters into a fractional value. Each individual data symbol can be, for example, encoded by representing each symbol in the string of characters by a range of values between 0 and 1. The size of the specific range can signify the probability of that symbol occurring. Arithmetic encoding is also recursive in that, on each recursion, the algorithm will further partition the range of values between 0 and 1 and retain one of the partitions as the new interval. The coded string of characters lies in the new interval. The string of characters is decoded by a series of comparisons to determine how the entropy coder successively partitioned and retained each nested subinterval.